import { createStore } from 'vuex'
import { login,getinfo,loginOut } from '~/api/manager'
// 引入cookie工具函数
import { setCookie,deleteCookie } from '~/api/util/auth'
// 路由方法体

// 创建一个新的 store 实例
const store = createStore({
  state () {
    return {
        // 用户信息存储
        user :{
             
        }
    }
  },
  mutations: {
     SET_USERINFO (state, user) {
        // 使用state中user对象存储传入的用户信息
        state.user = user
      }
  },
  actions: {
    // 登录
    login({ commit },{username,password}){
      return new Promise((resolve,reject)=>{
        console.log("执行登入actions")
        // 调用登录函数
        login(username,password).then(res=>{
          // 存储token
          setCookie(res.token)
          console.log("删除token")
          resolve(res)
        })
      }).catch(err=>{reject(err)})
    },
    // 获取当前用户信息
    getinfo({ commit }){
      return new Promise((resolve,reject)=>{
        // 调用获取用户信息函数
        getinfo().then(userinfo=>{
          // 提交mutations 存储用户信息
          commit('SET_USERINFO',userinfo)
          resolve(userinfo)
        }).catch(err=>{reject(err)})
      })
    },
    // 退出登入
    loginOut({ commit }){
      return new Promise((resolve,reject)=>{
        loginOut().then(res=>{
          deleteCookie()
          console.log("移除cookie ")
          //清除用户信息(将空对象赋值给store中的user)
          commit('SET_USERINFO',{})
          // 页面跳转
          store.router.push({ path: '/login' })
          resolve(res)
        }).catch(err=>{reject(err)})
      })
    },

  }
})
export default store